// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2023 Yevhen Babiichuk (DustDFG)

#ifndef _DOT_SORT_TUBE_SET_BUILDER_HPP_
#define _DOT_SORT_TUBE_SET_BUILDER_HPP_

#include <cstdint>

#include <DotSort/GameRules/TubeSet.hpp>

class TubeSetBuilder
{
	protected:
		TubeSet* instance;

		void push(uint8_t tubeIndex, uint8_t dot);

		virtual void fillInstance() = 0;

	public:
		TubeSetBuilder(uint8_t tubeSize, uint8_t tubeCount);
		virtual ~TubeSetBuilder() = default;

		const uint8_t tubeSize;
		const uint8_t tubeCount;

		TubeSet* operator()();
};

#endif
